var _ = require("lodash");
// _.zip([arrays])
// _.zip 方法用于将多个数组（或类似数组的对象）的元素组合到一起，
// 返回一个新的数组，其中每个元素都是一个由原始数组对应位置的元素组成的数组。
// 如果各个数组的长度不同，那么返回的新数组的长度将与最长的那个数组相同
// 如果有对应位置没有元素的，会使用undefined来代替
// 可以理解为把多个一维数组转换成二维数组
const names = ["Alice", "Bob", "Charlie"];
const ages = [25, 30, 35];
const gender = ["男", "女"];
const a = _.zip(names, ages);
// console.log(a);

let b = _.zip(names, ages, gender);
// console.log(b);

// _.unzip(array)
// 把压缩后的数组再次拆分开来

let arr = [
  ["Alice", 25],
  ["Bob", 30],
  ["Charlie", 35],
];
let c = _.unzip(arr);
// console.log(c);

let brr = [
  ["Alice", 25, "男"],
  ["Bob", 30, "女"],
  ["Charlie", 35, undefined],
];
let d = _.unzip(brr);
// console.log(d);

// _.unzipWith(array, [iteratee=_.identity])
// 这个方法指定了需要被组合的元素以何种方式来组合
// 这就是对二维数组的操作
let crr = [
  [1, 2],
  [10, 20],
  [100, 200],
];
function test(...arg) {
  let list = [...arg];
  // sum接受的是一个数组
  return _.sum(list);
}
// add只能接受两个参数
let e = _.unzipWith(crr, _.add);
console.log(e);

let f = _.unzipWith(crr, test);
console.log(f);
